package com.Fh.exception_;
public class exception_introduce {
    public static void main(String[] args) {
        int num1=10;
        int num2=0;
        try {
            int res=num1/num2;
        } catch (Exception e) {
//        对于下代码：表示又重新抛出了一个异常，不会执行后面的输出语句
            throw new RuntimeException(e);
        }
        System.out.println("程序继续运行....");
        try {
            int res = num1 / num2;
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("出现异常的原因=" + e.getMessage());//输出异常信息
        }
        System.out.println("程序继续运行....");
//        介绍一下常见的五大运行时异常
//        1. 空指针：当应用程序试图在需要对象的地方使用null时，抛出该异常
        String name = null;
        System.out.println(name.length());
//        2. 运算异常见上
//        3. 数组下标越界异常
        int[] arr = {1,5,6};
        for (int i = 0; i <= arr.length; i++) {
            System.out.println(arr[i]);
        }
//        4. 类型转换异常：当试图将对象强制转换为不是实例的子类时，抛出该异常
        A b = new B();//向上转型
        B b1 = (B) b;//向下转型
        C c = (C) b;
//        5. 当应用程序试图将字符串转换成一种数值类型，但该字符不能转换为适当格式时
//        String name =  "小明爱学习";
//        int num = Integer.parseInt(name);
//        System.out.println(num);



    }
}
class A{}
class B extends A{}
class C extends B{}
